# import os
# from openai import OpenAI
# os.environ["DASHSCOPE_API_KEY"] = "sk-5c6689dccd074a739c78ef7d1d780148"
#
# client = OpenAI(
#     # 若没有配置环境变量，请用阿里云百炼API Key将下行替换为：api_key="sk-xxx",
#     api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如何获取API Key：https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
# )
#
# completion = client.chat.completions.create(
#     model="deepseek-v3",  # 此处以 deepseek-r1 为例，可按需更换模型名称。
#     messages=[
#         {"role": "system", "content": "你是一个数学老师，任课一年级的课程。你需要洞察学生的思想"},
#         {"role": "user", "content": "请给我准备一下一年级的课程内容，要详细，字数在10000字以上"},
#     ]
# )
# # 通过content字段打印最终答案
# print("最终答案：")
# print(completion.choices[0].message.content)
import time
# from openai import AzureOpenAI
# client_gpt = AzureOpenAI(
#   azure_endpoint = "https://hydsoft-gpt-4o.openai.azure.com",
#   api_key="AWYrdx7jGx84uykKjJL1BYCaLP9UPUKWMM3Y9w7kS17PyoDlTF12JQQJ99BAAC4f1cMXJ3w3AAABACOGVbCz",
#   api_version="2024-02-01"
# )
# messages = [{"role":"user","content":"hi"}]
# response = client_gpt.chat.completions.create(
#     messages=messages,
#     model="gpt-4o"
# )
# print(response.choices[0].message.content)

# import requests
# import os
#
# os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7897"
#
# url = "https://hydsoft-gpt-4o.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-02-01"
# headers = {
#     "Content-Type": "application/json",
#     "api-key": "AWYrdx7jGx84uykKjJL1BYCaLP9UPUKWMM3Y9w7kS17PyoDlTF12JQQJ99BAAC4f1cMXJ3w3AAABACOGVbCz"
# }
# data = {
#     "messages": [{"role": "user", "content": "hi"}],
#     "temperature": 0.7,
#     "max_tokens": 1000
# }
#
# response = requests.post(url, headers=headers, json=data, timeout=30)
# print(response.json()['choices'][0]["message"]["content"])

#
# import os
# import httpx
# from openai import OpenAI
#
# # 设置阿里云百炼 API Key
# os.environ["DASHSCOPE_API_KEY"] = "sk-5c6689dccd074a739c78ef7d1d780148"
#
# # 代理设置（以 Clash 监听 7897 端口为例）
# proxies = {
#     "http://": "http://127.0.0.1:7897",
#     "https://": "http://127.0.0.1:7897",
# }
#
# # 自定义 HTTP Transport
# transport = httpx.HTTPTransport(proxy="http://127.0.0.1:7897")
#
# # 初始化 OpenAI 兼容客户端（用于阿里云百炼 DashScope）
# client = OpenAI(
#     api_key=os.getenv("DASHSCOPE_API_KEY"),
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
#     http_client=httpx.Client(transport=transport),
# )
#
# # 请求 Chat Completion
# completion = client.chat.completions.create(
#     model="deepseek-v3",
#     messages=[
#         {"role": "system", "content": "你是一名数学老师，教授一年级学生。"},
#         {"role": "user", "content": "请帮我准备一份一年级数学教学内容，要求详细且超过10000字。"},
#     ]
# )
#
# # 输出结果
# print("最终答案：")
# print(completion.choices[0].message.content)


from pathlib import Path
from openai import OpenAI
from PyPDF2 import PdfReader, PdfWriter


# def ask():
#     client = OpenAI(
#         api_key="sk-zABGgyHj3rb59p5zzyxkUwLMwUeULUbfTuj7i5Zze8ha5vFS",
#         base_url="https://api.moonshot.cn/v1",
#     )
#
#
#     input_path = "D:\\yuanbei\\data\\印度-查询中-SURA0805-pass_SURA0805-.pdf"
#     output_path = "D:\\yuanbei\\data\\解密文件1.pdf"
#     password = "SURA0805"
#
#     reader = PdfReader(input_path)
#     if reader.is_encrypted:
#         if reader.decrypt(password):
#             writer = PdfWriter()
#             for page in reader.pages:
#                 writer.add_page(page)
#             with open(output_path, "wb") as f:
#                 writer.write(f)
#             print("解密完成:", output_path)
#         else:
#             print("密码错误，无法解密")
#
#     # xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 以及图片等格式, 对于图片和 pdf 文件，提供 ocr 相关能力
#     file_object = client.files.create(file=Path(output_path), purpose="file-extract")
#
#     # 获取结果
#     # file_content = client.files.retrieve_content(file_id=file_object.id)
#     # 注意，之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替
#     # 如果是旧版本，可以用 retrieve_content
#     file_content = client.files.content(file_id=file_object.id).text
#
#     messages = [
#             {
#                 "role": "system",
#                 "content": '''
#
#                 你是我的小助手，你需要根据輸入的pdf,帮我找出账户记为account，时间区间记为time，time转换为年/月/日-年/月/日格式，以及518977112955记为utr对应的一行金额记为Credit，金额是正值的，不是负值的金额，找不到金额的则为空，
#
#                 最后输出：
#                 {
#                     account,
#                     time,
#                     utr,
#                     Credit
#                 }
#
#
#                 禁止输出其他的内容。
#
#
#                 ''',
#             },
#
#     # 把它放进请求中
#     # messages = [
#     #     {
#     #         "role": "system",
#     #         "content": '''
#     #
#     #         你是我的小助手，你需要根据輸入的pdf，从里面找出对应的内容，最后用json输出，
#     #         第一个字段：”Account Number“，以及对呀的值
#     #         第二个字段：”Description“和’Credit‘，这个需要在表格中找，条件是查找’Description‘等于’518905250794‘的值，以及对应的Credit的值，
#     #
#     #         输出格式：
#     #         {
#     #           "Account Number": "00000020169623037",
#     #           "Description": "518905250794",
#     #           "Credit": "1,061.00"
#     #         }
#     #         即可
#     #
#     #
#     #         禁止输出其他的内容。
#     #
#     #
#     #         ''',
#     #     },
#
#         {
#             "role": "system",
#             "content": file_content,
#         }
#     ]
#
#     # 然后调用 chat-completion, 获取 Kimi 的回答
#     completion = client.chat.completions.create(
#         model="kimi-k2-0711-preview",
#         messages=messages,
#         temperature=0.6,
#     )
#
#     print(completion.choices[0].message.content)
#
#     return completion.choices[0].message.content
#

# def ask_llm_img_re_utr(save_path):
#     for i in range(5):
#         print("尝试一次失败")
#         try:
#             # 初始化 OpenAI 兼容客户端（用于阿里云百炼 DashScope）
#             client = OpenAI(
#                 api_key="sk-zABGgyHj3rb59p5zzyxkUwLMwUeULUbfTuj7i5Zze8ha5vFS",
#                 base_url="https://api.moonshot.cn/v1",
#             )
#
#             # xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 以及图片等格式, 对于图片和 pdf 文件，提供 ocr 相关能力
#             file_object = client.files.create(file=Path(save_path), purpose="file-extract")
#
#             # 获取结果
#             # file_content = client.files.retrieve_content(file_id=file_object.id)
#             # 注意，之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替
#             # 如果是旧版本，可以用 retrieve_content
#             file_content = client.files.content(file_id=file_object.id).text
#
#             # 把它放进请求中
#             messages = [
#                 {
#                     "role": "system",
#                     "content": '''
#
#                     你需要提取图片中的utr账号，有可能是utr，有可能是UPI transation ID，你需要根据图片自己判断，是哪一个，然后将对应的内容提取出来，
#
#                     如UPI transation ID，提取出来的值为：559182964263
#
#                     如utr，提取出来的值为：522912483722
#
#                     如UPI Ref NO，提取出来为：523031225323
#
#                     不允许返回空，不允许返回其他的内容，
#
#                     只返回账号信息，其余的不用管，
#
#                     禁止输出其他的内容。
#
#
#                     ''',
#                 },
#                 {
#                     "role": "system",
#                     "content": file_content,
#                 }
#             ]
#
#             # 然后调用 chat-completion, 获取 Kimi 的回答
#             completion = client.chat.completions.create(
#                 model="kimi-k2-0711-preview",
#                 messages=messages,
#                 temperature=0.6,
#             )
#             return completion.choices[0].message.content
#         except Exception as e:
#             print("LLM Error:", e)
#             # return "抱歉，AI 处理时出现错误。"
#
#     raise Exception("多次重试仍然失败")
# if __name__ == '__main__':
#     ask_llm_img_re_utr("D:\\yuanbei\\客服问答机器人需求表\\source_files\\imgs\\20250818165147_photo.jpg")

#
# from pathlib import Path
# from openai import OpenAI
#
# client = OpenAI(
#     api_key="sk-zABGgyHj3rb59p5zzyxkUwLMwUeULUbfTuj7i5Zze8ha5vFS",
#     base_url="https://api.moonshot.cn/v1",
# )
#
# # xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 以及图片等格式, 对于图片和 pdf 文件，提供 ocr 相关能力
# file_object = client.files.create(file=Path("D:\\yuanbei\\客服问答机器人需求表\\source_files\\imgs\\20250818165147_photo.jpg"), purpose="file-extract")
#
# # 获取结果
# # file_content = client.files.retrieve_content(file_id=file_object.id)
# # 注意，之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替
# # 如果是旧版本，可以用 retrieve_content
# file_content = client.files.content(file_id=file_object.id).text
#
# # 把它放进请求中
# messages = [
#     {
#         "role": "system",
#         "content": '''
#
#                     你需要提取图片中的utr账号，有可能是utr，有可能是UPI transation ID，你需要根据图片自己判断，是哪一个，然后将对应的内容提取出来，
#
#                     如UPI transation ID，提取出来的值为：559182964263
#
#                     如utr，提取出来的值为：522912483722
#
#                     如UPI Ref NO，提取出来为：523031225323
#
#                     不允许返回空，不允许返回其他的内容，
#
#                     只返回账号信息，其余的不用管，
#
#                     禁止输出其他的内容。
#
#
#                     ''',
#     },
#     {
#         "role": "system",
#         "content": file_content,
#     }
# ]
#
# # 然后调用 chat-completion, 获取 Kimi 的回答
# completion = client.chat.completions.create(
#     model="kimi-k2-0711-preview",
#     messages=messages,
#     temperature=0.6,
# )
#
# print(completion.choices[0].message)
#
# from openai import OpenAI
# import os
# import base64
#
#
# #  base 64 编码格式
# def encode_image(image_path):
#     with open(image_path, "rb") as image_file:
#         return base64.b64encode(image_file.read()).decode("utf-8")
# def ask_img_qwen():
#     # 将xxxx/eagle.png替换为你本地图像的绝对路径
#     base64_image = encode_image("D:\\yuanbei\\客服问答机器人需求表\\source_files\\mp4s\\1.mp4")
#
#     client = OpenAI(
#         # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx"
#         api_key="sk-fd6c79bf32274aae845c9d3372b6331b",
#         base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
#     )
#     completion = client.chat.completions.create(
#         model="qwen-vl-max-latest", # 此处以qwen-vl-max-latest为例，可按需更换模型名称。模型列表：https://help.aliyun.com/zh/model-studio/models
#         messages=[
#             {
#                 "role": "system",
#                 "content": [{"type":"text","text": '''
#
#                         你需要提取图片中的utr账号，有可能是utr，有可能是UPI transation ID，你需要根据图片自己判断，是哪一个，然后将对应的内容提取出来，
#
#                         如UPI transation ID，提取出来的值为：559182964263
#
#                         如utr，提取出来的值为：522912483722
#
#                         如UPI Ref NO，提取出来为：523031225323
#
#                         不允许返回空，不允许返回其他的内容，
#
#                         只返回账号信息，其余的不用管，
#
#                         禁止输出其他的内容。
#
#
#                         ''',}]},
#             {
#                 "role": "user",
#                 "content": [
#                     {
#                         "type": "image_url",
#                         # 需要注意，传入Base64，图像格式（即image/{format}）需要与支持的图片列表中的Content Type保持一致。"f"是字符串格式化的方法。
#                         # PNG图像：  f"data:image/png;base64,{base64_image}"
#                         # JPEG图像： f"data:image/jpeg;base64,{base64_image}"
#                         # WEBP图像： f"data:image/webp;base64,{base64_image}"
#                         "image_url": {"url": f"data:image/mp4;base64,{base64_image}"},
#                     }
#                 ],
#             }
#         ],
#     )
#     print(completion.choices[0].message.content)



# from openai import OpenAI
# import os
# import base64
#
#
# #  Base64 编码格式
# def encode_video(video_path):
#     with open(video_path, "rb") as video_file:
#         return base64.b64encode(video_file.read()).decode("utf-8")
# def qwen_vied():
#     # 将xxxx/test.mp4替换为你本地视频的绝对路径
#     base64_video = encode_video("D:\\yuanbei\\客服问答机器人需求表\\source_files\\mp4s\\1.mp4")
#     client = OpenAI(
#         # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx"
#         api_key="sk-fd6c79bf32274aae845c9d3372b6331b",
#         base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
#     )
#     completion = client.chat.completions.create(
#         model="qwen-vl-max-latest",
#         messages=[
#             {
#                 "role": "system",
#                 "content": [{"type":"text","text": '''
#
#                         你需要提取视频中的utr账号，有可能是utr，有可能是UPI transation ID，你需要根据图片自己判断，是哪一个，然后将对应的内容提取出来，
#
#                         如UPI transation ID，提取出来的值为：559182964263
#
#                         如utr，提取出来的值为：522912483722
#
#                         如UPI Ref NO，提取出来为：523031225323
#
#                         不允许返回空，不允许返回其他的内容，
#
#                         只返回账号信息，其余的不用管，
#
#                         禁止输出其他的内容。
#
#
#                         '''}]},
#             {
#                 "role": "user",
#                 "content": [
#                     {
#                         # 直接传入视频文件时，请将type的值设置为video_url
#                         "type": "video_url",
#                         "video_url": {"url": f"data:video/mp4;base64,{base64_video}"},
#                     }
#                 ],
#             }
#         ],
#     )
#     print(completion.choices[0].message.content)
# if __name__ == '__main__':
#     qwen_vied()



import os
from openai import OpenAI
#
# client = OpenAI(
#     # 若没有配置环境变量，请用阿里云百炼API Key将下行替换为：api_key="sk-xxx",
#     api_key="sk-fd6c79bf32274aae845c9d3372b6331b",
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
# )
#
# completion = client.chat.completions.create(
#     model="deepseek-v3.1",  # 此处以 deepseek-v3.1 为例，可按需更换模型名称。
#     messages=[
#         {'role': 'user', 'content': '你是谁'}
#     ]
# )
# print(completion.choices[0].message.content)

# 初始化 OpenAI 兼容客户端（用于阿里云百炼 DashScope）
# client = OpenAI(
#     api_key="sk-fd6c79bf32274aae845c9d3372b6331b",
#     base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
#     # http_client=httpx.Client(transport=transport),
# )
#
# # 请求 Chat Completion
# completion = client.chat.completions.create(
#     model="deepseek-v3.1",
#     messages=[
#         {"role": "system", "content":
#             '''
#
#             你需要根据user输入的content提取出编号，
#
#             如'28198-印度&Deepay',提取出来的编号是'28198'，像这样的开头是5个连续的纯数字组成，就需要提取出来编号，就是成功的；
#
#             如'216-5-AXPAY-7.5+3+6 四方 原208'，像这样的开头没有连续的5个纯数字组成，那就无法提取出来编号，就不提取，返回'无'；
#
#
#             1.编号由5个数字组成，如果编号的第一个数字是1，则对应的国家是印度，则对应的地址是"https://adm.deepay.ink"
#
#             2.编号由5个数字组成，如果编号的第一个数字是2，则对应的国家是印尼，则对应的地址是"https://adm.deepaym.com"
#
#             3.编号由5个数字组成，如果编号的第一个数字是3，则对应的国家是巴基斯坦，则对应的地址是"https://admpkr.deepay.ink"
#
#             4.编号由5个数字组成，如果编号的第一个数字是4，则对应的国家是孟加拉，则对应的地址是"https://admbd.deepay.ink"
#
#             5.编号由5个数字组成，如果编号的第一个数字是4，则对应的国家是巴西，则对应的地址是"https://admbr.deepay.ink"
#
#             上述国家名称和地址需要严格执行，
#
#             然后，你需要将国家对应的地址和对应的编号，填写到下面的字典里面,地址对应的是"address"，编号对应的是"mid"：
#
#             给你一个列子，如果是印尼，则返回：
#
#             {"address":"https://adm.deepaym.com","mid":"28204"}
#
#             你就按照上面的这种填写就行，然后返回给我即可，
#
#             如果有数据,则返回像这样的:{"address":"https://adm.deepaym.com","mid":"28204"}
#
#             如果找不到编号，则返回"无"，纯文字，禁止返回其他的内容
#
#             一定不要返回空字符串，不要返回给我其他任意的无用的内容，
#
#             其他的不需要返回,禁止回答其他的内容。
#
#             '''},
#         {"role": "user", "content": "23456"},
#     ]
# )
#
# print(completion.choices[0].message.content)



import os
from dashscope import MultiModalConversation
def qwen_vied():
    # 将xxxx/test.mp4替换为你本地视频的绝对路径
    local_path = "D:\\yuanbei\\客服问答机器人需求表\\source_files\\videos\\20250828161833_viedo.mp4"
    video_path = f"file://{local_path}"
    messages = [{'role': 'system',
                    'content': [{'text': 'You are a helpful assistant.'}]},
                    {'role':'user',
                    # fps参数控制视频抽帧数量，表示每隔1/fps 秒抽取一帧
                    'content': [{'video': video_path,"fps":2},
                                {'text': '''

                                你需要提取图片中的流水时间和和对应的金额，

                                时间找最大的时间点，判断2025/8/27是不是在提取的时间前，同一天也不行，只能比视频中的最大时间小，如果是则是y，不是则是n，

                                判断金额141.000是不是和视频中的金额相等，要完全相等，小数点后面的也要判断完全相等，不可以有一点偏差，如果相等则是y，不相等则是n，

                                返回视频中最大的见时间，格式为xxxx/xx/xx，

                                返回的内容：

                                {
                                    'video_max_time':{这里填写视频中最大的时间},
                                    'video_order_equal':{这里填写视频时间比较的判断结果},
                                    'video_amount':{这里填写视频中找到的和提供的金额相等的金额},
                                    'video_amount_equal':{这里填写金额是否相等的判断结果}。
                                }

                                最后返回的是上面的json格式数据

                                不允许返回空，不允许返回其他的内容，

                                禁止输出其他的内容。


                        '''}]}]
    response = MultiModalConversation.call(
        # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx"
        api_key="sk-fd6c79bf32274aae845c9d3372b6331b",
        model='qwen-vl-max-latest',
        messages=messages)
    print(response["output"]["choices"][0]["message"].content[0]["text"])
if __name__ == '__main__':
    qwen_vied()
